/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.sadhar.sipp.perekamanjeniskegiatan;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.sadhar.sia.common.ClassConnection;
import org.sadhar.sia.common.ClassUtility;
import org.springframework.jdbc.core.RowMapper;

/**
 *
 * @author hendro
 */
public class PerekamanJenisKegiatanDAOImpl implements PerekamanJenisKegiatanDAO {

    public PerekamanJenisKegiatanDAOImpl(){
        ClassConnection.getTransactionProxyFactoryBean().setTarget(this);
    }

    public List<PerekamanJenisKegiatan> list() {
        List<PerekamanJenisKegiatan> list = new ArrayList<PerekamanJenisKegiatan>();
        List<Map> rows = ClassConnection.getJdbc().queryForList("SELECT * FROM ppmk.jenisKegiatan");
        for(Map m : rows){
            PerekamanJenisKegiatan jenis = new PerekamanJenisKegiatan();
            jenis.setKodeJenisKegiatan(Integer.valueOf(m.get("kodeJenisKegiatan").toString()));
            jenis.setJenisKegiatan(m.get("jenisKegiatan").toString());
            list.add(jenis);
        }
        return list;
    }

    public void insert(PerekamanJenisKegiatan jenis) throws Exception {
        String sql = "INSERT INTO ppmk.jenisKegiatan(jenisKegiatan) VALUES(?)";
        ClassConnection.getJdbc().update(sql,new Object[]{ClassUtility.quote(jenis.getJenisKegiatan())});
    }

    public void update(PerekamanJenisKegiatan jenis) throws Exception {
        String sql = "UPDATE ppmk.jenisKegiatan SET jenisKegiatan=? WHERE kodeJenisKegiatan=?";
        ClassConnection.getJdbc().update(sql,new Object[]{ClassUtility.quote(jenis.getJenisKegiatan()),
                Integer.valueOf(jenis.getKodeJenisKegiatan())});
    }

    public void delete(PerekamanJenisKegiatan jenis) throws Exception {
        String sql = "DELETE FROM ppmk.jenisKegiatan WHERE kodeJenisKegiatan=?";
        ClassConnection.getJdbc().update(sql,new Object[]{Integer.valueOf(jenis.getKodeJenisKegiatan())});
    }

    public List select(String jenisKegiatan) throws Exception {
        String sql = "SELECT * FROM ppmk.jenisKegiatan WHERE jenisKegiatan=?";
        return ClassConnection.getJdbc().queryForList(sql,new Object[]{jenisKegiatan});
    }

    public List select(int kodeJenisKegiatan, String jenisKegiatan) throws Exception {
        String sql = "SELECT * FROM ppmk.jenisKegiatan WHERE kodeJenisKegiatan<>? AND jenisKegiatan=?";
        return ClassConnection.getJdbc().queryForList(sql,new Object[]{Integer.valueOf(kodeJenisKegiatan),jenisKegiatan});
    }

    public PerekamanJenisKegiatan select(int kodeJenisKegiatan) throws Exception {
        PerekamanJenisKegiatan jenisKegiatan = null;
        String sql = "SELECT * FROM ppmk.jenisKegiatan WHERE kodeJenisKegiatan=?";
        jenisKegiatan = (PerekamanJenisKegiatan)ClassConnection.getJdbc().queryForObject(sql, new Object[]{kodeJenisKegiatan},new RowMapper(){

            public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
                return new PerekamanJenisKegiatan(
                        rs.getInt("kodeJenisKegiatan"),
                        rs.getString("jenisKegiatan"));
            }
            
        });
        return jenisKegiatan;
    }

    public List<PerekamanJenisKegiatan> list(String key) throws Exception {
       List<PerekamanJenisKegiatan> list = new ArrayList<PerekamanJenisKegiatan>();
        List<Map> rows = ClassConnection.getJdbc().queryForList("SELECT * FROM ppmk.jenisKegiatan WHERE jenisKegiatan LIKE ?",
                new Object[]{"%"+key+"%"});
        for(Map m : rows){
            PerekamanJenisKegiatan jenis = new PerekamanJenisKegiatan();
            jenis.setKodeJenisKegiatan(Integer.valueOf(m.get("kodeJenisKegiatan").toString()));
            jenis.setJenisKegiatan(m.get("jenisKegiatan").toString());
            list.add(jenis);
        }
        return list;
    }

}
